/*
 * Copyright (c) 2021 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the 'License');
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an 'AS IS' BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
export { TlsVersion } from './src/main/ets/TlsVersion'
export { Route } from './src/main/ets/Route'
export { Address } from './src/main/ets/Address'
export { SocketAddress } from './src/main/ets/Socket/SocketAddress'
export { ProxySelector } from './src/main/ets/ProxySelector'
export { Headers } from './src/main/ets/Headers'
export { ResponseBody } from './src/main/ets/ResponseBody'
export { CacheControl } from './src/main/ets/CacheControl'
export { MediaType } from './src/main/ets/MediaType'
export { NullProxySelector } from './src/main/ets/proxy/NullProxySelector'
export { CookieJar } from './src/main/ets/CookieJar'
export { Cookie } from './src/main/ets/Cookie'
export { Authenticator, AuthenticatorNONE } from './src/main/ets/Authenticator'
export { ConnectionSpec } from './src/main/ets/ConnectionSpec'
export { CipherSuite } from './src/main/ets/CipherSuite'
export { SocketFactory } from './src/main/ets/Socket/SocketFactory'
export { SSLSocketFactory } from './src/main/ets/Socket/SSLSocketFactory'
export { ConnectionPool } from './src/main/ets/ConnectionPool'
export { RealConnectionPool, nanoTime } from './src/main/ets/connection/RealConnectionPool'
export { Charset } from './src/main/ets/utils/Charset'
export { CertificatePinner } from './src/main/ets/CertificatePinner'
export { RealCall } from './src/main/ets/connection/RealCall'
export { TaskQueue } from './src/main/ets/concurrent/TaskQueue'
export { RealConnection } from './src/main/ets/connection/RealConnection'
export { Call } from './src/main/ets/Call'
export { Exchange } from './src/main/ets/connection/Exchange'
export { Connection } from './src/main/ets/Connection'
export { EMPTY_HEADERS, EMPTY_RESPONSE, EMPTY_REQUEST} from './src/main/ets/utils/Utils'

export { SystemFileSystem } from './src/main/ets/io/FileSystem'

export { DiskLruCache } from './src/main/ets/cache/DiskLruCache';

export { CacheStrategy, Factory as CacheStrategyFactory } from './src/main/ets/cache/CacheStrategy';

export { Cache } from './src/main/ets/Cache';

export { TaskRunner } from './src/main/ets/concurrent/TaskRunner';

export { HttpUrl, HttpUrlBuilder } from './src/main/ets/HttpUrl';

export { Sink } from './src/main/ets/okio/Sink'

export { Credentials } from './src/main/ets/Credentials'

export { Proxy, ProxyType} from './src/main/ets/Socket/Proxy'

export { ProxyAuthenticator, PreemptiveProxyAuthenticator } from './src/main/ets/ProxyAuthenticator'

export { RequestBody } from './src/main/ets/RequestBody';

export { Part, MultipartBody } from './src/main/ets/MultipartBody';
export { MultipartReader } from './src/main/ets/MultipartReader';

export { FormBody } from './src/main/ets/FormBody';

export { TimeUnit } from './src/main/ets/utils/TimeUnit';

export { RealWebSocket } from './src/main/ets/RealWebSocket';

export { WebSocketListener } from './src/main/ets/WebSocketListener';

export { WebSocket, Factory } from './src/main/ets/WebSocket';

export { Dns, DnsSystem } from './src/main/ets/Dns';

export { Interceptor, Chain } from './src/main/ets/Interceptor';

export { Response } from './src//main/ets/Response';

export { Request } from './src/main/ets/Request';

export { Utils } from './src/main/ets/utils/Utils';

export { default as OkHostnameVerifier } from './src/main/ets/tls/OkHostnameVerifier';

export { default as StringUtil } from './src/main/ets/utils/StringUtil';

export { Protocol } from './src/main/ets/Protocol';

export { OkHttpClient } from './src/main/ets/OkHttpClient';

export { X509TrustManager, X509TrustManagerSystem } from './src/main/ets/Socket/X509TrustManager';

export { SSLSocket, SSLSession } from './src/main/ets/Socket/SSLSocket';

export { TLSConnectOptions, TLSSecureOptions } from './src/main/ets/Socket/TLSConnectOptions';

export { TCPConnectOptions, NetAddress, ProxyOptions } from './src/main/ets/Socket/TCPConnectOptions';

export { Challenge } from './src/main/ets/Challenge';

export { parseChallenges, promisesBody, receiveHeaders } from './src/main/ets/http/HttpHeaders';

// 导出所有错误类型
export {
  StreamResetException,
  ConnectionShutdownException,
  FileNotFoundException,
  SocketTimeoutException,
  SSLHandshakeException,
  SSLPeerUnverifiedException,
  InterruptedIOException,
  IOException,
  ProtocolException,
  IllegalStateException,
  RouteException,
  CertificateException,
  SSLCertificateException,
  CertificateExpiredException,
  CertificateNotYetValidException,
  CertificateRevokedException,
  CertificatePathException,
  SNIException,
  ProxyConnectException
} from './src/main/ets/Error/error';